toastLog("版本：25.10.1");
FloatyUtil(); //=悬浮窗加载===
init();
let height = device.height;
let width = device.width; 
// var items = ["摇一摇现金任务", "体育服务"];
// var indices = []; //默认选中索引为1和3的选项
var 是否做肥料任务 = true; //支付宝淘宝任务不做
let 当前音量 = device.getMusicVolume();
device.setMusicVolume(0);
device.setBrightnessMode(0);
let 第一数组 = []

// let 多线程 = threads.start(function () {
//   findAndClick("允许|立即开始", 8000, 1000);
// });
// if (!requestScreenCapture()) {
//   toast("请求截图失败");

  // exit();
// }
// 多线程.interrupt();
setClip("112324");
sleep(2000);
let algorithm_change_support = false;
let today = new java.text.SimpleDateFormat("yyyyMMdd").format(new Date());
let storage = storages.create(today);
let a1934017003 = storages.create("a1934017003");
// if (a1934017003.get("选择任务")) {
//   indices = a1934017003.get("选择任务");
// }
let 退出当前循环 = false;
// let qq = require("/sdcard/脚本/QQ");
const 阳光农场 = "https://m.tb.cn/h.SWT7INt?tk=xcYn4E1TLPx";
const 切换支付宝账号页面 = "alipays://platformapi/startapp?appId=20000027";
const 支付宝积分页面 = "alipays://platformapi/startapp?appId=20000160";
const 淘宝巴巴农场页面 ="https://m.duanqu.com?_ariver_appid=19760947&_mp_code=tb&hd_from=shareBack&spm=farm.27792077.c1.d1";
const 支付宝农场data = "alipays://platformapi/startapp?appId=68687599";
const 淘宝首页 = "https://h5.m.taobao.com/index.html";
var 全局变量 = 0;
const 支付宝视频助力 ="alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/3ok0280yqjzwgkryvaa1"
//========================测试代码========================================
// 淘宝阳光农场() 
// 道具施肥();

// view2()
// 支付宝任务()
// 淘宝任务()
// click(432,1249)
// 支付宝任务() 
// 淘宝快捷指令("");
// findAndClick("去逛逛")
// exit()
// killApp("淘宝")
// 快速打开("淘宝切换账号", "com.taobao.taobao", "com.taobao.login4android.membercenter.account.MultiAccountActivity");


//==========================测试代码======================================
// let 自动确定 = threads.start(function () {
//   sleepT(5, "5秒后自动确定");
//   findAndClick("确定");
// });
// dialogs.multiChoice("5秒后自动默认选择", items, indices, (selectedIndices) => {
//   toastLog("用户选项索引：" + selectedIndices);
//   /0/.test(selectedIndices) ? (摇一摇现金任务 = true) : "";

//   a1934017003.put("选择任务", selectedIndices);  
//   自动确定.interrupt();
// });

storages.remove(today - 1);
if (device.getAndroidId() == "7b6f9919b6a2df77") {
  公共部分提取("185.*", "185.*");
  公共部分提取("tb.*0", "130.*");
  公共部分提取("d.*d", "193.*");
} else if (device.getAndroidId() == "3c44f3941eb7d04a") {
  公共部分提取("t.*7", "182.*");
  公共部分提取("c.*9", "152.*");
  公共部分提取("t.*6", "450.*");
} else if ("263a7c919de623a2" == device.getAndroidId()) {
  公共部分提取("t.*3", "zfb.*");
  // 公共部分提取("y.*1", "183.*");

  公共部分提取("tb.*2", "303.*");
} else if (device.getAndroidId() == "76ab974a691dbc07") {
  公共部分提取("zhang.*", "186.*97");
  公共部分提取("183.*71", "183.*71");
  公共部分提取("2.*q", "244.*");//2442087332
} else { 
  循环("支付宝积分()", 2);
  if (是否做肥料任务) {
    支付宝任务();
    淘宝任务();
  }
  isStorage("支付宝-淘宝农场助力", "其他");
}
device.setMusicVolume(当前音量);
toastLog("任务结束");
home();
exit();
function 积分任务页面() {
  支付宝快捷指令(支付宝积分页面);
  let 全部领取 = findAndClick("全部领取.*|立即加入|取消");
  if (全部领取 && (全部领取.text() == "立即加入" || 全部领取.text() == "取消")) {
    return false;
  }
  findAndClick("每日签到|取消");
  if(widgetCheck("取消")){
    return false;
  }
  widgetCheck("做任务赚积分");
  return true;
}
function 做积分任务() {
  let texttitle = "开始";
  sleepT(3);
  for (let condition = 30; condition > 0; condition--) {
    sleepT(2, "等待2秒后查询积分"); //页面更新时间
    let numIsTrue = widgetGetOne(/\+3$|\+5$|\+3积分|\+5积分/);
    if(!numIsTrue){
      支付宝快捷指令("alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https%3A%2F%2Fqr.alipay.com%2F2p407222stankwmxtuca%3F_s%3Dweb-other&launchKey=49ee68a1-98e4-4180-b3fe-a6cd2c421a1d-1738910937147")
      numIsTrue = widgetGetOne(/\+5$|\+3$|\+5积分|\+3积分/);
    }
    if (numIsTrue) {
      let now_numIsTrue = numIsTrue.parent().parent().child(2).text();
      if(!now_numIsTrue){
        now_numIsTrue = numIsTrue.parent().parent().child(1).text();
      }
      log(now_numIsTrue)
      if (texttitle == now_numIsTrue) {
        showFLog("查询2次任务标题结果一样退出" + now_numIsTrue);
        break;
      }
      texttitle = now_numIsTrue;
      log(texttitle + " 当前浏览次数：" + condition);
      if (!积分点击去完成(numIsTrue, texttitle)) {
        break;
      }
    } else {
      showFLog("查询超时结束查询积分任务");
      break;
    }
  }
  swipe(500, height - 300, 500, 300, 500);
  swipe(500, height - 300, 500, 300, 500);
  view();
}
function 积分点击去完成(str, textstr) {
  let strText = textstr;
  try {
    // if (/逛一逛淘特APP|提醒好友/.test(strText)) {
    //   showFLog("淘特任务不做， 退出积分任务");
    //   return false;
    // }
    let 去完成 = className("android.widget.Button")
      .boundsInside(700, str.bounds().top - 100, height, str.bounds().bottom + 100)
      .findOne(5000);
    if (去完成) {
      clickView(去完成);
    }
    // className("com.uc.webview.export.WebWiew").visibleToUser().findOne(4000);
    // if ("逛一逛快手极速版" == strText) {
    //   findAndClick("我知道了");
    //   findAndClick("去赚钱");
    //   sleepT(3);
    // } else if (/去嘉年华抽/.test(strText)) {
    //   findAndClick("公主王子请抽签.*");
    //   返回(3);
    // } else if (/蚂蚁新村/.test(strText)) {
    //   sleepT(3);
    //   click(device.width / 2, device.height / 2); //固定位置
    //   返回(3);
    // } else if (strText.replace(/[^\d]/g, "").length > 1) {
    //   showFLog("滑动15秒后返回");
      view();
    // } else {
      // 返回();
    // }
    
  } catch (error) {
    console.error("积分点击去完成任务错误:" + error);
    return false;
  }
  
  return true;
}
function 公共部分提取(淘宝账号, 支付宝账号) {
  if (切换支付宝账号(支付宝账号) == "找到") {
    循环("支付宝积分()", 2);
    切换淘宝账号(淘宝账号);
    if (是否做肥料任务) {
      try {
        淘宝任务();
        支付宝任务();
      } catch (error) {
        console.error(error);
      }
    }
    isStorage("支付宝-淘宝农场助力", 淘宝账号);
  }
}

function 切换支付宝账号(str) {
  const 校验切换账号页面 = () => {
    支付宝快捷指令(切换支付宝账号页面);
    widgetCheck("登录其他账号");
  };
  校验切换账号页面();
  if (findAndClick(str)) {
    return "找到";
  } 
}

function 切换淘宝账号(str) {
  快速打开("淘宝切换账号", "com.taobao.taobao", "com.taobao.login4android.membercenter.account.MultiAccountActivity");
  if (widgetCheck("切换")) {
       findAndClick(str)
  } else {
    if (!findAndClick(str, 7000, 1000)) {
      showFLog("没有查询到账号，清理淘宝重新打开");
      killApp("淘宝");
      快速打开("淘宝切换账号", "com.taobao.taobao", "com.taobao.login4android.membercenter.account.MultiAccountActivity");
      findAndClick(str, 7000, 1000);
    }
  }
  淘宝快捷指令(淘宝首页);
}

function 支付宝任务() {
  打开支付宝农场任务列表();

  // for (let i = 0; i < 3; i++) {
  //   log("当前支付宝浏览任务："+i)
  //   let 去完成 =  findAndClick(".逛好物.*进度0.*|.限时.*0.*|.逛精选.*0.*|.逛精选.*1.3*|.逛精选.*2.3*")
  //   if (!去完成) {
  //     break;
  //   }
  //   支付宝浏览()
  // }
  findAndClick("去领取", 5000);
  循环点击收取("领取");
  //上面任务 可以调到其他页面这边重新打开
  打开支付宝农场任务列表();
  循环点击收取("领取");
  findAndClick("去逛逛", 5000);
  view();
}
function 淘宝任务() {
  // 淘宝视频和签到现金();
  taobao芭芭农场();
  findAndClick("继续努力|我知道了|立即领取|关闭");
  集肥料任务();
}


/**淘宝直播签到，每日签到，视频浏览 */
function 淘宝视频和签到现金() {
  // toastLog("开始小红包任务");
  // sleepT(5)
  // 淘宝快捷指令("https://m.tb.cn/h.SWfZyVJ");
  // let 下单推荐=findAndClick("下单推荐")
  // if(下单推荐){
  //   click(width/2,下单推荐.bounds().bottom)
  // }
  // 淘宝快捷指令("https://m.tb.cn/h.6EGcFwp");
  // sleepT(5)
  // findAndClick("展开")
  淘宝快捷指令(淘宝首页);
  showFLog("淘宝签到");
  if (!findAndClick(".*签到")) {
    killApp("淘宝");
    淘宝快捷指令(淘宝首页);
    findAndClick(".*签到");
  }
  滑动检测();
  if (findAndClick("立即签到|点击领取", 8000, 3000)) {
    findAndClick("关闭");
    findAndClick("赚元宝");
    if (!搜索3()) {
      back();
    }
    if (!findAndClick("点击领取")) {
      back();
      findAndClick("点击领取");
    }
    findAndClick("赚元宝");
    if (findAndClick("去完成")) {
      返回(16);
    }
  }
}

function 支付宝每日肥料() {
  log("等待任务列表出现");
  let 任务列表 = widgetGetOne("任务列表",10000);
  if (任务列表) {
    sleepT(1);
    console.log("领取每日肥料:" + 任务列表.bounds().centerX() + " " + 任务列表.bounds().top - (100 / 2400) * height);
    click(任务列表.bounds().centerX(), 任务列表.bounds().top - 100);
    关闭弹出广告();
    return 任务列表;
  }
}
function 集肥料任务() {
  home()
  if(idAndClick("com.taobao.taobao:id/click_area_1_2")){
    sleepT(5)
    findAndClick("集肥料");
  }else{
    taobao芭芭农场();
  }
  let 农场百科 = widgetGetOne("农场百科.*");
  if (农场百科 && /0.1/.test(农场百科.text())) {
    findAndClick("去签到")
    去答题();
  } else if (农场百科 && /1.1/.test(农场百科.text())) {
    showFLog("每日回答已经完成");
  } else {
    console.error("没有找到任务页面中,农场百科,重新启动app");
    taobao芭芭农场();
    去答题();
  }
  run();
  findAndClick("去领取")
}
function 去答题() {
  if (findAndClick("去答题", 5000)) {
    sleepT(1);
    if(!findAndClick("选Ta.*")){
      findAndClick("A.*|选.*")
    }
    sleepT(1);
    findAndClick("领取.*");
    sleepT(1);
    click(800, 1800);
    sleepT(1);
    if (!text("浏览15秒得").exists()) {
      taobao芭芭农场();
    }
    sleepT(1);
  }
}

function run() {
  sleepT(1);
  for (var t = 1; t < 15; t++) {
    if (!findAndClick(/去浏览|去逛逛|.*15秒.*|去完成/)) {

      showFLog("列表任务完成");
      break;
    }
    let name_搜索 = widgetGetOne("搜索", 2000);
    if (name_搜索) {
      taobao_搜索(name_搜索);
      continue;
    }
    if ("com.taobao.taobao" != currentPackage()) {
      sleepT(3);
      taobao芭芭农场();
      break;
    }
    if (textContains("什么").exists()) {
      返回(18);
      continue;
    }
    //页面中如果出现取消按键就点击
    if (text("取消").findOnce()) {
      findAndClick("取消");
    }
    view();
    showFLog("已经逛: " + t + "次");
    taobao芭芭农场()
  }
  showFLog("========浏览和逛逛任务结束============");
}

function run_淘宝浏览15秒(str) {
  sleepT(1);
  let name_搜索 = widgetGetOne("搜索|关注", 2000);
  if (name_搜索 && name_搜索.text() == "搜索") {
    return taobao_搜索(name_搜索);
  } else if (name_搜索) {
    showFLog("查询到关注等待20秒返回");
    返回(20);
    return;
  }
  if (currentPackage() != "com.taobao.taobao" && currentPackage() != "com.taobao.idlefish") {
    showFLog("当前没有在淘宝~打开淘宝");
    sleepT(3);
    launchApp("淘宝");
    返回();
    return;
  }
  view(str);
}
function taobao_搜索() {
  随机输入一个字符串搜索();
  findAndClick("搜索");
  view();
  返回(2);
  showFLog("搜索任务完成");
}
function view() {
  for (let i = 1; i < 7; i++) {
    swipex();
    sleepT(3);
  }
  showFLog("==========滑动完成==============");
  返回();
  全局变量=2
}

function view2() {
  for (let i = 1; i <12; i++) {
    swipex();
    sleepT(3);
  }
  showFLog("==========滑动完成==============");
  返回();
}

function task骰子() {
  showFLog("==========开始查找骰子任务==============");
  let widgetOne立即抽奖 = text("立即抽奖").depth(11).findOne(3000);
  if (widgetOne立即抽奖) {
    widgetOne立即抽奖.click();
    sleepT(3);
    let 立即抽奖 = text("立即抽奖").depth(14).findOne(3000);
    if (立即抽奖) {
      立即抽奖.click();
    }
  }
  let widgetOne放弃奖励 = widgetGetOne("放弃奖励", 1000);
  if (widgetOne放弃奖励) {
    showFLog("==========骰子任务第二情况==============");
    clickCenter(widgetOne放弃奖励);
  }
  sleepT(2);
  let widgetOne骰子图像 = widgetGetOne("骰子图像.*", 3000);
  if (widgetOne骰子图像) {
    clickCenter(widgetOne骰子图像);
    sleepT(2);
    clickCenter(widgetOne骰子图像);
    sleepT(1);
    click(500, 1500);
    返回();
    if (!widgetGetOne("已完成")) {
      返回();
    }
    return false;
  }
  return true;
}
function taobao芭芭农场() {
  淘宝快捷指令(淘宝巴巴农场页面);
  // 淘宝快捷指令(淘宝首页);
  // findAndClick("芭芭农场")
  sleepT(5);
  findAndClick("集肥料");
  sleepT(2);
}
function 支付宝施肥() {
  支付宝快捷指令(支付宝农场data);
  let 任务列表 = 支付宝每日肥料();
  let 施肥位置 = 1950;
  if (任务列表) {
    施肥位置 = 任务列表.bounds().centerY();
  }
  sleepT(2)
  click(500, 施肥位置);
  关闭弹出广告();
  sleepT(2, "等待2秒防止被触发校验");
  施肥次数(施肥位置, 38);
  sleep(1000);
  去淘宝施肥20次(施肥位置);
  if (findAndClick("立即领奖.*")) {
    findAndClick("立即领取");
    findAndClick("点此.*|点击.*");
    view();
  }
  if (findAndClick("任务列表")) {
    sleepT(2);
    循环点击收取("领取");
  }
  道具施肥();
}
function 关闭弹出广告() {
  showFLog("开始校验弹框并关闭");
  sleepT(3);
  text("关闭")
    .clickable()
    .find()
    .forEach((v) => {
      clickCenter(v);
    });
}

/**
 * 根据内容获取一个对象
 *
 * @param {string} contentVal
 * @param {number} timeout 默认超时时间5秒
 * @param {boolean} containType 是否带回类型
 * @param {boolean} suspendWarning 是否隐藏warning信息
 * @param {function} appendFilter 附加查询条件 详见UiSelector
 */
function widgetGetOne(contentVal, timeout, containType, suspendWarning, appendFilter, options) {
  let target = null;
  let isDesc = false;
  let waitTime = timeout || 8000;
  let timeoutFlag = true;
  showFLog("try to find one: " + contentVal.toString() + "timeout: " + waitTime + "ms");
  console.info("查询信息：" + contentVal.toString());
  let checkResult = widgetCheck(contentVal, waitTime, true, appendFilter, options);
  if (!checkResult.timeout) {
    timeoutFlag = false;
    target = checkResult.target;
    isDesc = checkResult.isDesc;
  }
  // 当需要带回类型时返回对象 传递target以及是否是desc
  if (target && containType) {
    let result = {
      target: target,
      bounds: target.bounds(),
      isDesc: isDesc,
      content: isDesc ? target.desc() : target.text(),
    };
    return result;
  }
  return target;
}

/**
 * 替换控件搜索算法DFS,BFS,VDFS,VBFS,PDFS,PBFS,PVDFS,PVBFS
 * DFS,BFS为默认提供的深度优先和广度优先搜索算法
 * VDFS,VBFS为我修改的只搜索可见控件（控件包括父级不可见则直接跳过）深度优先和广度优先搜索算法 缺点是无法搜索不可见控件，适合一个界面中有巨量控件的时候用于加快搜索速度 实际数据抖音极速版从25s缩短到3s
 * PDFS,PBFS,PVDFS,PVBFS 是通过多线程搜索控件 大大加快搜索速度
 *
 * @param {string} algorithm 搜索算法DFS,BFS,VDFS,VBFS,PDFS,PBFS,PVDFS,PVBFS
 * @param {UiSelector} mselector
 * @returns
 */
function wrapSelector(algorithm, appendFilter, mselector) {
  appendFilter =
    appendFilter ||
    function (matcher) {
      return matcher;
    };
  mselector = appendFilter(mselector || selector());
  if (!algorithm) {
    return mselector;
  }
  if (!algorithm_change_support) {
    log(["当前版本不支持替换搜索算法"]);
    return mselector;
  }
  current = this.getCurrentAlgorithm();
  if (current == algorithm) {
    return mselector;
  }
  log(["替换搜索算法为：{} 原始算法：{}", algorithm, current]);
  return AlgorithmChanger.changeAlgorithm(mselector, algorithm);
}




/**
 * id检测
 * @param {string|RegExp} idRegex
 * @param {number} timeoutSetting
 */
function idCheck(idRegex, timeoutSetting, containType, appendFilter, options) {
  options = options || {};
  let timeout = timeoutSetting || 5000;
  let timeoutFlag = true;
  let countDown = new java.util.concurrent.CountDownLatch(1);
  let target = null;
  let idCheckThread = threads.start(function () {
    target = wrapSelector(options.algorithm, appendFilter).idMatches(idRegex).findOne();
    showFLog("find id " + idRegex);
    timeoutFlag = false;
    countDown.countDown();
  });

  let timeoutThread = threads.start(function () {
    sleep(timeout);
    countDown.countDown();
  });
  countDown.await();
  idCheckThread.interrupt();
  timeoutThread.interrupt();
  if (timeoutFlag) {
    log("未能找到id:" + idRegex + "对应的控件");
  }
  if (containType) {
    return {
      timeout: timeoutFlag,
      target: target,
      bounds: target ? target.bounds() : null,
    };
  }
  return !timeoutFlag;
}

/**
 * 校验控件是否存在
 * @param {String} contentVal 控件文本
 * @param {Number} timeoutSetting 超时时间 单位毫秒
 * @param {Boolean} containType 返回结果附带文本是desc还是text
 * @param {Object} options 额外参数
 * 超时返回false
 */
function widgetCheck(contentVal, timeoutSetting, containType, appendFilter, options) {
  options = options || {};
  let timeout = timeoutSetting || 8000;
  let timeoutFlag = true;
  let countDown = new java.util.concurrent.CountDownLatch(1);
  let matchRegex = new RegExp(contentVal);
  let isDesc = false;
  let target = null;
  let descThread = threads.start(function () {
    target = wrapSelector(options.algorithm, appendFilter).descMatches(matchRegex).findOne();
    let res = target.desc();
    log("find desc " + contentVal + " " + res);
    timeoutFlag = false;
    isDesc = true;
    countDown.countDown();
  });

  let textThread = threads.start(function () {
    target = wrapSelector(options.algorithm, appendFilter).textMatches(matchRegex).findOne();
    let res = target.text();
    log("find text " + contentVal + "  " + res);
    timeoutFlag = false;
    countDown.countDown();
  });

  let timeoutThread = threads.start(function () {
    sleep(timeout);
    log("等待查询:" + contentVal + " 超时");
    countDown.countDown();
  });
  countDown.await();
  descThread.interrupt();
  textThread.interrupt();
  timeoutThread.interrupt();
  if (timeoutFlag) {
    showFLog("cannot find any matches " + contentVal + " timeout:" + timeout);
  }
  if (containType) {
    return {
      timeout: timeoutFlag,
      target: target,
      bounds: target ? target.bounds() : null,
      isDesc: isDesc,
    };
  }
  return !timeoutFlag;
}



/**
 * 根据id获取控件信息
 * @param {String|RegExp} idRegex id
 * @param {number} timeout 超时时间
 * @return 返回找到的控件，否则null
 */
function widgetGetById(idRegex, timeout, appendFilter, options) {
  options = options || {};
  timeout = timeout || 5000;
  let target = idCheck(idRegex, timeout, true, appendFilter, options);
  if (!target.timeout) {
    return target.target;
  } else {
    return null;
  }
}

function clickCenter(obj, x, y) {
  x = x || 0;
  y = y || 0;
  if (obj.bounds().centerX() > width || obj.bounds().centerY() > height-100 || obj.bounds().centerX() < 0 || obj.bounds().centerY() < 0) {
    log("不可点击范围:" + obj.bounds().centerX() + " " + obj.bounds().centerY() + " 额外" + x + "," + y);
    return true;
  }
  log(obj.text())
  log(" 点击位置：" + Number(obj.bounds().centerX() + x) + " " + Number(obj.bounds().centerY() + y));
  click(Number(obj.bounds().centerX() + x), Number(obj.bounds().centerY() + y));
  return false;
}


/**
 * 找到并且点击 如果返回错误就点击中心 返回一个布尔值
 * @param {str} 要找的字符串 @param {sleepTime} 查询时间 @param {waitSleep} 等待waitSleep后查询
 */
function findAndClick(str, sleepTime, waitSleep) {
  waitSleep = waitSleep || 300;
  sleep(waitSleep);
  sleepTime = sleepTime || 8000;
  let widgetGet = widgetGetOne(str, sleepTime);
  if (widgetGet) {
    clickView(widgetGet);
    return widgetGet;
  }
  return false;
}

function clickView(obj) {
  try {
    let clickSuccessful = false;
    let originalObj = obj; // 保存最初的控件
    clickCenter(originalObj); // 点击最初的控件的中心位置
    sleep(1000);
    for (let i = 0; i < 4; i++) {
      if (originalObj && originalObj.clickable) {
        if (originalObj.click()) {
          clickSuccessful = true;
          break;
        }
      } else {
        try {
          originalObj =  originalObj.parent();
        } catch (error) {
          log("找爸爸出错了")
        }
     
        if(!originalObj){
          break;
        }
      }
    }
    clickSuccessful ? console.log("Control clicked successfully") : console.log("Control not clickable, checking parent");
    sleep(500);
  } catch (error) {
    console.error("按键点击失败：" + error);
  }
}

function swipex(speed) {
  let millis = parseInt(speed) || 500;
  let x = parseInt(width / 2);
  let startPoint = height - 350;
  // 滑动距离，二分之一屏幕
  let distance = parseInt(height / 3);
  let endPoint = startPoint - distance;
  if (全局变量 % 2 == 0) {
    swipe(x, endPoint, x + 100, startPoint, millis);
  } else {
    swipe(x, startPoint, x + 100, endPoint, millis);
  }
  全局变量++;
}

function showFLog(msgLog) {
  let str = msgLog + " ";
  setInfo(str);
}
//================悬浮窗开始================
function FloatyUtil() {
  this.floatyWindow = null;
  this.floatyInitStatus = false;
  this.floatyLock = threads.lock();
  this.floatyCondition = this.floatyLock.newCondition();
}

function init() {
  if (this.floatyInitStatus) {
    return;
  }
  let _this = this;
  threads.start(function () {
    _this.floatyLock.lock();
    try {
      if (_this.floatyInitStatus) {
        return;
      }
      _this.floatyWindow = floaty.rawWindow(
        <frame gravity="left">
          <text id="content" textSize="16dp" textColor="#00ff00" bg="#000000" alpha="0.6" />
        </frame>
      );
      ui.run(function () {
        _this.floatyWindow.setTouchable(false);
        _this.floatyWindow.setPosition(50, 50);
        _this.floatyWindow.content.text("悬浮窗初始化成功");
      });
      _this.floatyInitStatus = true;
    } catch (e) {
      console.error("悬浮窗初始化失败" + e);
      _this.floatyWindow = null;
      _this.floatyInitStatus = false;
    } finally {
      _this.floatyCondition.signalAll();
      _this.floatyLock.unlock();
    }
  });
  _this.floatyLock.lock();
  try {
    if (_this.floatyInitStatus === false) {
      console.info("等待悬浮窗初始化");
      _this.floatyCondition.await();
    }
  } finally {
    _this.floatyLock.unlock();
  }
}

function setInfo(text, position, option) {
  option = option || {};
  if (this.floatyWindow === null) {
    this.init();
  }
  let _this = this;
  ui.run(function () {
    _this.floatyLock.lock();
    try {
      if (position && isFinite(position.x) && isFinite(position.y)) {
        _this.floatyWindow.setPosition(parseInt(position.x), parseInt(position.y) + 100);
      }
      if (text) {
        _this.floatyWindow.content.text(text);
      }
      if (option.textSize) {
        _this.floatyWindow.content.setTextSize(option.textSize);
      }
      if (typeof option.touchable !== "undefined") {
        _this.floatyWindow.setTouchable(option.touchable);
      }
    } finally {
      _this.floatyLock.unlock();
    }
  });
}
//============悬浮窗结束=================

function 循环点击收取(str) {
  // textContains(str)
  text(str)
    .find()
    .forEach((v) => {
      v.click();
      sleep(300);
    });
  sleepT(1);
  showFLog(str + "完毕");
}
function 打开支付宝农场任务列表() {
  支付宝快捷指令(支付宝农场data);
  if (!findAndClick("任务列表", 8000, 3000)) {
    // killApp("com.eg.android.AlipayGphone");
    // 支付宝快捷指令(支付宝农场data);
    // findAndClick("任务列表", 8000, 3000);
    sleepT(1); 
  }
}
//这里从缓存中获取如有有值就说明今天已经助力了，不需要助力
function isStorage(action, zhifbao) {
  showFLog("本地缓存：" + storage.get(today + zhifbao + action));
  if (!storage.get(today + zhifbao + action)) {
    try {
      支付宝施肥();
    } catch (error) {
      log("支付宝施肥失败：" + error);
    }

    淘宝阳光农场();
    log("今天账号：" + zhifbao + " 还没有助力，助力后缓存助力，之后今天执行就不助力");
    支付宝视频任务();
    支付宝助力()
    storage.put(today + zhifbao + action, today + zhifbao + action);
  } else {
    showFLog("今天账号：" + today + zhifbao + action + " 助力过了");
  }
}

function killApp(appName) {
  // var name = getPackageName(appName); //通过app名称获取包名
  // if (null == name) {
  //   name = appName; //通过app名称获取包名
  // }
  // app.openAppSetting(name); //通过包名打开应用的详情页(设置页)
  // if (findAndClick(/强.*|停.*|结.*/)) {
  //   findAndClick(/强.*|停.*|结.*/);
  //   findAndClick(/确定/);
  // }
  home(); 
  recents()
  findAndClick(".*清理.*")
}

function findClickAndSwipe(action, times, sleepTime, str) {
  times = times || 10;
  sleepTime = sleepTime || 3000;

  if (findAndClick(action)) {
    if (widgetGetOne("搜索", 2000)) {
      taobao_搜索();
      return false;
      }

    for (let i = 1; i <= times; i++) {
      sleep(sleepTime);
      swipex();
      if (退出当前循环) {
        break;
      }
    }
    返回();
    return false;
  }
  return true;
}
function 搜索3(num) {
  if (findAndClick("去搜索", 8000, 2000)) {
    随机输入一个字符串搜索();
    findClickAndSwipe("搜索", num);
    sleep(1000);
    返回(1);
  } else {
    showFLog("没查询到去搜索");
    return true;
  }
  sleepT(2, "搜索完成等待2秒");
}
function 快捷指令(dataStr) {
  app.startActivity({
    data: dataStr,
  });
  findAndClick("允许|打开", 3000);
}
function 支付宝快捷指令(dataStr) {
  home();
  sleep(1000);
  app.startActivity({
    packageName: "com.eg.android.AlipayGphone",
    data: dataStr,
  });
  findAndClick("允许|打开", 4000);
}
function 淘宝快捷指令(dataStr) {
  home();
  sleep(1000);
  app.startActivity({
    data: dataStr,
    packageName: "com.taobao.taobao",
    className: "com.taobao.browser.BrowserActivity",
  });
  findAndClick("允许|打开", 4000);
}
function 快速打开(name, packageName, className) {
  app.startActivity({
    packageName: packageName,
    className: className,
  });
  findAndClick(".*允许|打开", 4000);
}

function 返回(time, str) {
  sleepT(time, str);
  if (!back()) {
    sleep(400);
    back();
  }
  sleepT(2, "返回结束~~");
}




function 支付宝浏览() {
  view();
  校验当前页面是不是支付宝();
}

function 随机输入一个字符串搜索() {
  sleepT(3);
  const chars = [
    "奶嘴",
    "奶瓶",
    "纸尿裤",
    "奶粉",
    "宝宝衣服",
    "高脚椅",
    "小推车",
    "密封宝宝药箱",
    "哺乳枕",
    "吸奶器内衣",
    "安抚奶嘴",
    "背巾",
    "新生儿衣物",
    "防胀气奶瓶",
    "一次性内裤",
    "跳绳",
    "儿童滑雪鞋",
    "浮水板",
  ];
  // 获取随机索引
  const randomIndex = Math.floor(Math.random() * chars.length);
  // 根据索引获取随机字符
  const randomChar = chars[randomIndex];
  setText(randomChar);
  showFLog("输入框中输入:" + randomChar);
  sleepT(1);
}
function 校验当前页面是不是支付宝() {
  if (currentPackage() != "com.eg.android.AlipayGphone") {
    showFLog("没在支付宝，启动支付宝");
    launch("com.eg.android.AlipayGphone");
  }
  
}


function idAndClick(str, sleepTime) {
  sleepTime = sleepTime || 8000;
  let widgetGet = widgetGetById(str, sleepTime);
  if (widgetGet) {
    clickView(widgetGet);
    return widgetGet;
  }
  return false;
}

function sleepT(num, str) {
  str = str || "";
  num = num || 1;
  for (let index = num; index > 0; index--) {
    showFLog("等待结束倒计时：" + index + "秒 " + str);
    sleep(1000);
  }
}

function 循环(str, num) {
  for (let i = 0; i < num; i++) {
    showFLog("循环次数" + num + " 当前：" + i);
    if (eval(str)) {
      showFLog("满足退出条件，退出");
      break;
    }
  }
}
function 支付宝积分() {
  if (积分任务页面()) {
    try {
      做积分任务();
    } catch (error) {}
  }
}

function 滑动检测() {
  let 请按照说明 = widgetGetOne("请按照说明.*|向右滑动.*");
  if (请按照说明) {
    let xy = 请按照说明.bounds();
    // log(xy.centerY() + " " + xy.left + " " + xy.right);
    swipe(xy.left, xy.centerY(), xy.right / 2, xy.centerY(), 300);
  }
}


function 淘宝阳光农场() {
  淘宝快捷指令(阳光农场);
  findAndClick(".*立即去收.*")
  sleepT(3)
  let 作物=widgetGetOne("作物")
  if(作物){
    click(width-100,作物.bounds().centerY())
  }else{
    click(width-100,height/2+200)
  }
  sleepT(3)
  findAndClick("去完成")
  循环('findClickAndSwipe("去完成", 5)',4)
 findAndClick("关闭")
  sleepT(2)
   className("TextView")
    .visibleToUser()
    .textMatches(/.*万|.*亿/)
    .find()
    .forEach((v) => {
      clickCenter(v,0,-10);
    });
  if (findAndClick("立即领取.*")) {
    className("TextView")
      .visibleToUser()
      .textMatches(/.*万|.*亿/)
      .find()
      .forEach((v) => {
        clickCenter(v,0,-10);
      });
  }
  循环点击收取("阳光");
  if (findAndClick("立即领取.*")) {
    className("TextView")
      .visibleToUser()
      .textMatches(/.*万|.*亿/)
      .find()
      .forEach((v) => {
        clickCenter(v,0,-10);
      });
  }
  循环点击收取("阳光");
  if(作物){
    click(width-100,作物.bounds().centerY())
  }else{
    click(width-100,height/2+200)
  }
  sleepT(1)
  findAndClick("关闭")
  if(findAndClick("去得阳光")){
    view2()
  }
}

function 支付宝视频任务() {
  快捷指令(支付宝视频助力);
  循环(" view()",4)
}

/**
 *
 * @param {正则表达/str/} str
 * @param {取值范围，起点+图片长宽} region
 * @param {} regex
 * @returns
 */
// function 找字(str, region, regex) {
//   region = region || [];
//   let 当前页面截图 = images.captureScreen();
//   let recognizeText = qq.recognizeWithBounds(当前页面截图, region, regex);
//   log("文字查询结果：" + recognizeText.length);
//   if (recognizeText.length == 0) {
//     当前页面截图 = images.captureScreen();
//     recognizeText = qq.recognizeWithBounds(当前页面截图, region, regex);
//     log("第二次文字查询结果：" + recognizeText.length);
//   }
//   当前页面截图.recycle();
//   for (let v of recognizeText) {
//     log(v.bounds + "  " + v.label);
//     if (str.test(v.label)) {
//       log("位置识别位置" + v.bounds.left + " " + v.bounds.top + " " + v.bounds.right + " " + v.bounds.bottom);
//       return { x: Math.floor((v.bounds.right + v.bounds.left) / 2), y: Math.floor((v.bounds.top + v.bounds.bottom) / 2) };
//     }
//   }
// }
function 施肥次数(施肥位置, num) {
  let 此时=textMatches(/.*次/).find()
      此时.forEach((v,i)=>{
      第一数组.push(v.text().replace(/[^0-9]/g, ''))
      log(第一数组[i])
  })

  for (var i = 0; i < num; i++) {
    click(width/2 + random(0, 20), 施肥位置);
    sleep(random(500, 700));
    showFLog("自动施肥:" + i);
    if (text("好的").exists()) {
      findAndClick("好的"); //升级时候出现
    }
    if (textMatches("今天|访问被拒绝|领取|去完成").exists()) {
      break
    }
  }
}
function 去淘宝施肥20次(施肥位置) {
    let 集肥料 = widgetGetOne("任务列表")
    if(集肥料){
      click(width/2,集肥料.bounds().top)
    }
    此时=textMatches(/.*次/).find()
    此时.forEach((v,i)=>{ 
      if(v.text().replace(/[^0-9]/g, '')!=第一数组[i]){
        log(v.text())
        v.text().replace(/[^0-9]/g, '')
      }
    })
    施肥次数(施肥位置, 199 - num);
    click(width/2,集肥料.bounds().top)
}

function 道具施肥() {
  淘宝快捷指令(淘宝巴巴农场页面);
  // 淘宝快捷指令(淘宝首页); 
  // findAndClick("芭芭农场")
  sleep(5000);
  findAndClick("更多.*")
  findAndClick(".*背包.*", 8000, 3000);
  if (findAndClick("商.*城")) {
    循环("findAndClick('600购买')", 2);
    findAndClick("我的背包");
    findAndClick(".*立即使用");
  }
  findAndClick("我的背包");
  findAndClick("立即使用");
}


function   支付宝助力(){
  let helpLinks = [
    "https://qr.alipay.com/1m40484xrlenk3pegy6a",
    "https://qr.alipay.com/1m40441hlbkmz30ak7be",
    "https://qr.alipay.com/1m40978ofomvyjm71270",
    "https://qr.alipay.com/1m40362lktn7re6p6za2",

    "https://qr.alipay.com/1m40414s7hysc67f0z57",
    "https://qr.alipay.com/1m40320heuox07gybrbb",
    "https://qr.alipay.com/1m40872undf0isjj7r12"
];

// 循环遍历每个助力链接
for (var i = 0; i < helpLinks.length; i++) {
  var link = helpLinks[i];
  淘宝快捷指令(link)
  if(findAndClick("为.*助力|立即助力")){
    i++
  }
  sleep(1000)
}
}

